<?php
//创建websocket服务器对象，监听0.0.0.0:9502端口
$ws = new swoole_websocket_server("0.0.0.0", 9502);

/**
 * 监听WebSocket连接打开事件
 * $ws : websocket服务器对象
 * $request : 客户端的请求
 * $request->fd : 客户端的唯一编号
 */
$ws->on('open', function ($ws, $request) {
    var_dump($request->fd,  $request->server);
    $ws->push($request->fd, "hello, welcome");
});

/*
 * 监听WebSocket消息事件
 * 客户端向服务器发送消息时调回调函数
 * $ws : websocket服务器对象
 * $frame :客户端发送的
 * $frame->fd : 客户端的唯一编号
 * $frame->data : 客户端发送的文文枉本内*
 * $ws->push(客户端的唯一编号，消息 //服务器向指定端发送消息
 *
 */
$ws->on('message', function ($ws, $frame) {
    /*
    //发给单一客户
    echo "Message: {$frame->data}\n";
    $ws->push($frame->fd, "server: {$frame->data}");*/
    $data = $frame->data;
    foreach ($ws->connections as $fd){
        $ws->push($fd, $data );
    }
});


/*
 * 监听WebSocket连接关闭事件
 * 务器关闭连接后该回调函数执行
 * $ws : websocket服务器对象
 * $fd : 客户端的唯一编号
 *  不管是客户端关闭还是服务器关闭，该函数都会被执行
 */
$ws->on('close', function ($ws, $fd) {
    echo "client-{$fd} is closed\n";
});

$ws->start();